package com.speech.net.constant;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * Created by XuLH on 2018/6/21.
 */
public enum EnumReqestActionCode
{
	//无
	UNKNOWN(0L),

	注册(101L),       //请求 data = UserRegister_Request， 返回 data = UserAuth_Result

	登录(102L),       //请求 data = UserLogin_Request，返回 data = UserAuth_Result

	token登录(103L),    //值要填写 uid  和 token，请求data空

	重置密码(105L),    //请求 data = UserLogin_Request，返回 data = UserAuth_Result


	//检查一下手机号是否已经注册
	查询注册(109L),

	设置头像(111L),     //设置头像用的 UserInfo_Data 结构，里面的头像 portrait 用 base64编码图片
	更新用户信息(112L),   //包括昵称 UserInfo_Data  只要填写 nick 就行

	//获取头像(121L),     //返回 UserInfo_Result
	获得用户信息(122L),   //包括昵称，头像等  返回的结构是 UserInfo_Data ， 同时包含昵称和头像

	获得邀请码地址(188L),  //什么参数也没有，就直接返回用户邀请码注册地址

	申请验证码(199L),    //data只有 "phone" 一个参数

	//设备需要先发送注册信息，以登记IP
	//当设备网络环境变化的时候需要重新登记IP
	设备登记(201L),     //请求data空

	//请求 data有一个字段, is_next，是一个数字  如果 is_next=0，那么还把上一句传过来，如果is_next>0，那么就下一句
	//返回data = RequestSentence_Result 里面的hash需要记录下来，读文本加币（802）要上传
	申请读文本(601L),

	查询用户读文本信息(651L),    //查询用户读的句子总数等信息

	签到(801L),

	读文本加币(802L),

	//这个是完成任务的接口，现在只包括加入社区，关注公众号，用户完成这两步会得到一个验证码，直接把那个码让用户输入上传即可
	//data 里面有个字段，用 mcode  然后mcode=任务码就行
	完成某任务(803L),

	查询资产(811L),


	申报排行榜(821L),    // 只上传一个值 todays_property， double类型数字
	获取排行榜(822L),    // 返回 UserPropertyRankData

	意见反馈(901L), //data 字段只有 suggestion

	查询更新(902L), //返回 UpdateInfo_Result

	获得加群二维码(903L),  //直接请求，不需要参数，返回结果 img = base64位编码图片
	;

	private final Long value;

	private static Map<Long, EnumReqestActionCode> mapV2E = new ConcurrentHashMap<>();

	static {
		for (EnumReqestActionCode c: EnumReqestActionCode.values()){
			mapV2E.put(c.value(), c);
		}
	}

	EnumReqestActionCode(Long v) {value=v;}
	@JsonValue
	public Long value() {return value;}

	@JsonCreator
	public static EnumReqestActionCode fromValue(Long val) {
		if(val==null) return null;
		EnumReqestActionCode ret = mapV2E.get(val);
		if(ret==null) ret = UNKNOWN;
		return ret;
	}
}
